<?php /**
	CrugeUtil
	
	funciones variadas que se usan durante toda la aplicacion.
	
 	@author: Christian Salazar H. <christiansalazarh@gmail.com> @bluyell
	@copyright Copyright &copy; 2008-2012 Yii Software LLC
	@license http://www.yiiframework.com/license/
*/
class CrugeUtil extends CComponent {

	public static function config() {
		return Yii::app()->getModule('cruge');
	}
	public static function factory(){
		return Yii::app()->getModule('cruge')->factory;
	}
	/*
		crea una URL normalizada relativa al action UiController 
	*/
	public static function uiaction($actionName,$params=array()) {
		return Yii::app()->createUrl('/'.self::config()->id.'/ui/'.$actionName,$params);
	}
	public static function passwordGenerator(){
		return substr(md5(rand().rand()), 0, 8);
	}
	
	/* normaliza el nombre de la tabla anexandole el prefijo y aplicando mapping
	
	*/
	public static function getTableName($tableName){
		$prfx = self::config()->tableprefix;
		$_tableName = trim(strtolower($tableName));
		if(isset(self::config()->maptables[$_tableName]))
			$_tableName = self::config()->maptables[$_tableName];
		return $prfx.$_tableName;
	}

	public static function isPhpFile($filename){
		return "php"===strtolower(trim(strrev(substr(strrev(trim($filename)), 0, 3))));
	}
	
	public static function getClassNameFromPhp($filename){
		$noext = trim(substr(strrev(trim($filename)),4,strlen(trim($filename))-4));
		$k=0;
		for($i=0;$i<strlen($noext);$i++){
			if(($noext[$i]=='\\') || ($noext[$i]=='/'))
				$k=$i;
			if($k > 0)
				break;
		}
		if($k==0)	
			$k = strlen($noext);
		
		return strrev(substr($noext,0,$k));
	}
	
	public static function now(){
		return time();
	}
	public static function makeExpirationDateTime($minutesPlus){
		return time() + ($minutesPlus * 60);
	}
	public static function isExpired($expirationdate){
		return !(self::now() <= $expirationdate);
	}
	
	public static function getIpAddress(){
		return Yii::app()->request->userHostAddress;
	}
	
	/**
		toma una tira de valores:
		"1, azul\n2, rojo\n3, verde"
		
		y devuelve un array asi:
		
		ar[1] = azul
		ar[2] = rojo
		ar[3] = verde
	*/
	public static function explodeOptions($listValues){
		$lista = explode("\n",$listValues);
		$ar=array();
		foreach($lista as $item){
			$k = explode(",",$item);
			$val = "";
			$text = "";
			if(count($k)==2){
				$val = trim($k[0]);
				$text = trim($k[1]);
			}
			else{
				$val = "0";
				$text = trim($k[0]);
			}
			$ar[$val] = $text;
		}
		return $ar;
	}
	
}